//package com.nit.tools;
//
//import com.nit.generate.NitChineseNameGenerator;
//import com.nit.generate.NitIdcardGenerator;
//import com.sun.image.codec.jpeg.JPEGCodec;
//import com.sun.image.codec.jpeg.JPEGEncodeParam;
//import com.sun.image.codec.jpeg.JPEGImageEncoder;
//
//import javax.swing.*;
//import java.awt.*;
//import java.awt.font.TextAttribute;
//import java.awt.image.BufferedImage;
//import java.io.FileOutputStream;
//import java.text.AttributedCharacterIterator;
//import java.text.AttributedString;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//public class IdCardUtils {
//
//
//    public static void main(String[] args) {
//        IdCardUtils.generateIdcodeZ("G:\\dev\\gitee\\nit-random-tools\\src\\main\\resources\\images\\",
//                "D://test/aa", 1);
//        IdCardUtils.generateIdcodeBack("D://test/aa.jpg", "xxxxxxxxxxxx");
//    }
//
//    public static boolean generateIdcodeZ(String baseDir, String tagerDir, long num) {
//        boolean bool = false;
//        // 背景图片
//        String file1 = "G:\\dev\\gitee\\nit-random-tools\\src\\main\\resources\\images\\idz_nan1.jpg";
//        try {
//            String address = NitChineseNameGenerator.generate();
//            String idcode = NitIdcardGenerator.generate();
//            String sex = "男";
//            String name = NitChineseNameGenerator.generate();
//            String year = "2021";
//            String month = "02";
//            String day = "02";
//
//            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
//            Map<String, Object> map = new HashMap<String, Object>();
//            Color color1 = new Color(30, 30, 30);
//            map.put("text", name); // 姓名
//            map.put("color", color1);
//            map.put("x", 90);
//            map.put("y", 48);
//            map.put("fontType", "黑体");
//            map.put("fontSize", 18);
//            list.add(map);
//
//            map = new HashMap<String, Object>();
//            map.put("text", sex); // 性别
//            map.put("color", color1);
//            map.put("x", 90);
//            map.put("y", 94);
//            map.put("fontType", "黑体");
//            map.put("fontSize", 18);
//            list.add(map);
//
//            map = new HashMap<String, Object>();
//            map.put("text", "汉族"); // 民族
//            map.put("color", color1);
//            map.put("x", 210);
//            map.put("y", 94);
//            map.put("fontType", "黑体");
//            map.put("fontSize", 18);
//            list.add(map);
//
//            map = new HashMap<String, Object>();
//            map.put("text", year); // 年
//            map.put("color", color1);
//            map.put("x", 90);
//            map.put("y", 136);
//            map.put("fontType", "黑体");
//            map.put("fontSize", 18);
//            list.add(map);
//
//            map = new HashMap<String, Object>();
//            map.put("text", month);// 月
//            map.put("color", color1);
//            map.put("x", 180);
//            map.put("y", 136);
//            map.put("fontType", "黑体");
//            map.put("fontSize", 18);
//            list.add(map);
//
//            map = new HashMap<String, Object>();
//            map.put("text", day);// 日
//            map.put("color", color1);
//            map.put("x", 230);
//            map.put("y", 136);
//            map.put("fontType", "黑体");
//            map.put("fontSize", 18);
//            list.add(map);
//
//            String[] adds = new String[2];
//            if (address.length() > 11) {
//                adds[0] = address.substring(0, 11);
//                adds[1] = address.substring(11);
//            } else {
//                adds[0] = address;
//                adds[1] = "";
//            }
//            map = new HashMap<String, Object>();
//            map.put("text", adds[0]); // 证件地址1
//            map.put("color", color1);
//            map.put("x", 90);
//            map.put("y", 184);
//            map.put("fontType", "黑体");
//            map.put("fontSize", 18);
//            list.add(map);
//            if (address.length() > 11) {
//                map = new HashMap<String, Object>();
//                map.put("text", adds[1]);// 证件地址2
//                map.put("color", color1);
//                map.put("x", 90);
//                map.put("y", 210);
//                map.put("fontType", "黑体");
//                map.put("fontSize", 18);
//                list.add(map);
//            }
//
//            map = new HashMap<>();
//            map.put("text", idcode); // 证件号码
//            map.put("color", color1);
//            map.put("x", 167);
//            map.put("y", 296);
//            map.put("fontType", "微软雅黑");
//            map.put("fontSize", 24);
//            list.add(map);
//
//
//
//            createMark(file1, tagerDir + "idz" + num + ".jpg", list);
//        } catch (Exception e) {
//            e.printStackTrace();
//            bool = false;
//        }
//        return bool;
//    }
//
//
//    private static boolean createMark(String filePath, String outFile, List<Map<String, Object>> list) {
//
//        System.out.println(filePath);
//        System.out.println(outFile);
//        ImageIcon imgIcon = new ImageIcon(filePath);
//        Image theImg = imgIcon.getImage();
//        int width = theImg.getWidth(null);
//        int height = theImg.getHeight(null);
//        BufferedImage bimage = new BufferedImage(width, height,
//                BufferedImage.TYPE_INT_RGB);
//        Graphics2D g = bimage.createGraphics();
//        g.drawImage(theImg, 0, 0, null);
//        for (int i = 0; i < list.size(); i++) {
//            add(g, list.get(i));
//        }
//        g.dispose();
//        try {
//            FileOutputStream out = new FileOutputStream(outFile);
//            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
//            JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
//            param.setQuality(70f, true);
//            encoder.encode(bimage, param);
//            out.close();
//        } catch (Exception e) {
//            return false;
//        } finally {
//            imgIcon = null;
//            theImg = null;
//        }
//        return true;
//    }
//
//
//    private static void add(Graphics2D g, Map<String, Object> map) {
//        String markContent = (String) map.get("text");
//        g.setColor((Color) map.get("color"));
//        g.setBackground(Color.white);
//
//        AttributedString ats = new AttributedString(markContent);
//        Font f = new Font((String) map.get("fontType"), Font.BOLD,
//                (Integer) map.get("fontSize"));
//        ats.addAttribute(TextAttribute.FONT, f, 0, markContent.length());
//        AttributedCharacterIterator iter = ats.getIterator();
//        // 添加水印的文字和设置水印文字出现的内容
//        g.drawString(iter, (Integer) map.get("x"), (Integer) map.get("y"));
//    }
//
//    //身份证背面
//    private static boolean generateIdcodeBack(String tager, String ress) {
//        boolean bool = false;
//
//        String backImage = "G:\\dev\\gitee\\nit-random-tools\\src\\main\\resources\\images\\idf.jpg";
//        try {
//            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
//            Map<String, Object> map = new HashMap<String, Object>();
//            Color color1 = new Color(30, 30, 30);
//            map.put("text", ress);
//            map.put("color", color1);
//            map.put("x", 220);
//            map.put("y", 263);
//            map.put("fontType", "黑体");
//            map.put("fontSize", 18);
//            list.add(map);
//
//            map = new HashMap<String, Object>();
//            map.put("text", "2023-01-09");
//            map.put("color", color1);
//            map.put("x", 220);
//            map.put("y", 310);
//            map.put("fontType", "微软雅黑");
//            map.put("fontSize", 18);
//            list.add(map);
//            createMark(backImage, tager, list);
//            bool = true;
//            System.out.println("证件反面照【" + tager + "】生成成功");
//        } catch (Exception e) {
//            e.printStackTrace();
//            bool = false;
//        }
//        return bool;
//    }
//}
